/**
 *	@file	pgear_act.c
 *	@brief	ポケギア　アクター制御
 *	@author	Miyuki Iwasawa
 *	@date	07.06.28
 */

#include "common.h"
#include "field/field_matrix.h"
#include "field/field_place_name.h"
#include "system/procsys.h"
#include "system/arc_util.h"
#include "system/arc_tool.h"
#include "system/clact_util.h"
#include "system/clact_tool.h"
#include "system/render_oam.h"
#include "system/fontproc.h"
#include "system/pm_str.h"
#include "system/msgdata.h"
#include "system/bmp_list.h"
#include "system/pm_str.h"
#include "system/buflen.h"
#include "system/window.h"
#include "communication/communication.h"
#include "application/app_tool.h"
#include "application/pokegear.h"

#include "data/clact_util/clact_header.naix"

#include "pgear_sys.h"
#include "pgear_frm.h"
#include "pgear_act.h"

///データテーブル登録構造体
typedef struct {
 int max;
 const TCATS_OAM_INIT *coi;
 const TCATS_CHAR_MANAGER_MAKE *ccmm;
 const TCATS_RESOURCE_FILE_LIST *list;
}_PGEAR_ACT_RES;

#define PGSYS_ACTRES_MAX	(64)

///データテーブル
static const TCATS_OAM_INIT pgmap_coi = {
	0,128,		///< メイン	OAM管理領域・開始/終了
	0,32,		///< メイン	アフィン管理領域・開始/終了
	0,128,		///< サブ	OAM管理領域・開始/終了
	0,32,		///< サブ	アフィン管理領域・開始/終了
};
static const TCATS_CHAR_MANAGER_MAKE pgmap_ccmm = {
	PGSYS_ACTRES_MAX,	//ID制御数
	64*1024,	//メイン画面サイズ(byte単位) 64kbyte
	16*1024,	//サブ画面サイズ(byte単位) 16kbyte
	GX_OBJVRAMMODE_CHAR_1D_32K,	//メインOBJモード指定
	GX_OBJVRAMMODE_CHAR_1D_32K,	//サブOBJモード指定
};

///TCATS_RES_ARC
static const TCATS_RESOURCE_FILE_LIST pgmap_list = {
	NARC_clact_header_pgmap_chr_resdat,		// キャラクタ
	NARC_clact_header_pgmap_pal_resdat,		// パレット
	NARC_clact_header_pgmap_cell_resdat,	// セル
	NARC_clact_header_pgmap_canm_resdat,	// セルアニメ
	TCATS_RESID_NULL,						// マルチセル
	TCATS_RESID_NULL,						// マルチセルアニメ
	NARC_clact_header_pgmap_celact_cldat	// ヘッダー
};
static const TCATS_RESOURCE_FILE_LIST pgskin_list = {
	NARC_clact_header_pgskin_chr_resdat,	// キャラクタ
	NARC_clact_header_pgskin_pal_resdat,	// パレット
	NARC_clact_header_pgskin_cell_resdat,	// セル
	NARC_clact_header_pgskin_canm_resdat,	// セルアニメ
	TCATS_RESID_NULL,						// マルチセル
	TCATS_RESID_NULL,						// マルチセルアニメ
	NARC_clact_header_pgskin_celact_cldat	// ヘッダー
};
static const TCATS_RESOURCE_FILE_LIST pgtel_list = {
	NARC_clact_header_pgtel_chr_resdat,		// キャラクタ
	NARC_clact_header_pgtel_pal_resdat,		// パレット
	NARC_clact_header_pgtel_cell_resdat,	// セル
	NARC_clact_header_pgtel_canm_resdat,	// セルアニメ
	TCATS_RESID_NULL,						// マルチセル
	TCATS_RESID_NULL,						// マルチセルアニメ
	NARC_clact_header_pgtel_celact_cldat	// ヘッダー
};
static const TCATS_RESOURCE_FILE_LIST pgradio_list = {
	NARC_clact_header_pgradio_chr_resdat,	// キャラクタ
	NARC_clact_header_pgradio_pal_resdat,	// パレット
	NARC_clact_header_pgradio_cell_resdat,	// セル
	NARC_clact_header_pgradio_canm_resdat,	// セルアニメ
	TCATS_RESID_NULL,						// マルチセル
	TCATS_RESID_NULL,						// マルチセルアニメ
	NARC_clact_header_pgradio_celact_cldat	// ヘッダー
};

static const _PGEAR_ACT_RES pgear_act_res[] = {
 { 128,
	 &pgmap_coi,&pgmap_ccmm,&pgskin_list },
 { 128,
	 &pgmap_coi,&pgmap_ccmm,&pgradio_list },
 { 192,
	 &pgmap_coi,&pgmap_ccmm,&pgmap_list },
 { 128,
	 &pgmap_coi,&pgmap_ccmm,&pgtel_list },
 { 128,
	 &pgmap_coi,&pgmap_ccmm,&pgmap_list },
};


///システムOAMリソースの数
#define PGSYS_OAM_CHR_RES_MAX	(1)
#define PGSYS_OAM_PAL_RES_MAX	(1)
#define PGSYS_OAM_CEL_RES_MAX	(1)
#define PGSYS_OAM_ANM_RES_MAX	(1)

///リソースタイプの定義
enum{
 RESTYPE_CHR,
 RESTYPE_PAL,
 RESTYPE_CEL,
 RESTYPE_ANM,
};

///システムリソース名定義
#define PGSYS_RES_CHRID	(NARC_pgsys_gra_oam_sys001_ncgr)
#define PGSYS_RES_CELID	(NARC_pgsys_gra_oam_sys001_ncer)
#define PGSYS_RES_ANMID	(NARC_pgsys_gra_oam_sys001_nanr)
#define PGSYS_RES_PALID	(NARC_pgsys_gra_oam_sys001_nclr)
#define PGSYS_RES_NOCOMP	(0)
#define PGSYS_RES_NOTRANS	(0)
#define PGSYS_RES_HEADID (0xe000)


/////////////////////////////////////////////////////////////////////////////
/**
 *	プロトタイプエリア
 */
/////////////////////////////////////////////////////////////////////////////


static void pgsysoam_ResManagerInit(PGSYS_OAM_MAN* wk,u8 skin);
static void pgsysoam_ResManagerRelease(PGSYS_OAM_MAN* wk);
static void pgsysoam_LoadResArc(PGSYS_OAM_MAN* wk,u8 skin);


/////////////////////////////////////////////////////////////////////////////
/**
 *	プログラムエリア
 */
/////////////////////////////////////////////////////////////////////////////

/*
 *	@brief	ポケギア　アクターシステム初期化
 */
void PGear_ActorSysInit(PGEAR_SYS_WORK *wk)
{
	initVramTransferManagerHeap(32,wk->heapID);

	//セルアクターシステム初期化
	wk->pActSys = CATS_AllocMemory(wk->heapID);

	CATS_SystemInit( wk->pActSys,
			pgear_act_res[0].coi,
			pgear_act_res[0].ccmm,
			32 );

	//OAM初期化
	REND_OAM_UtilOamRamClear_Main(wk->heapID);
	REND_OAM_UtilOamRamClear_Sub(wk->heapID);

	//通信中なら通信アイコン復帰
#if 0
	if(CommIsInitialize()){
		WirelessIconEasy();
	}
#endif

//	GF_Disp_GX_VisibleControl(GX_PLANEMASK_OBJ,VISIBLE_ON);
//	GF_Disp_GXS_VisibleControl(GX_PLANEMASK_OBJ,VISIBLE_ON);
}

/*
 *	@brief	ポケギア　アクターシステム開放
 */
void PGear_ActorSysRelease(PGEAR_SYS_WORK *wk)
{
	CATS_FreeMemory(wk->pActSys);
	wk->pActSys = NULL;
	DellVramTransferManager();

	//OAM初期化
	REND_OAM_UtilOamRamClear_Main(wk->heapID);
	REND_OAM_UtilOamRamClear_Sub(wk->heapID);
}

/*
 *	@brief	ポケギア　アクターリソースセット初期化
 */
void PGear_ActorResInit(PGEAR_SYS_WORK *wk,u8 mode)
{
	if(wk->pActSys == NULL){
		return;
	}

	//セルアクターシステム初期化
	wk->pActRes = CATS_ResourceCreate(wk->pActSys);
	CATS_ClactSetInit( wk->pActSys, wk->pActRes,pgear_act_res[mode].max );

	CATS_ResourceLoadBinaryEx( wk->pActSys, wk->pActRes, pgear_act_res[mode].list,
								CATS_CGXOFS_ADJUST,CATS_PLTTOFS_AREA);
}

/*
 *	@brief	ポケギア　アクターリソースセット開放
 */
void PGear_ActorResRelease(PGEAR_SYS_WORK *wk)
{
	if(wk->pActRes == NULL){
		return;
	}
	CATS_ResourceDestructor(wk->pActSys,wk->pActRes);
	wk->pActRes = NULL;
}

/*
 *	@brief	ポケギア　アクター描画メイン
 */
void PGear_ActorMain(PGEAR_SYS_WORK *wk)
{
	if(wk->pActRes != NULL){
		CATS_Draw(wk->pActRes);
	}
	return;
}

/*
 *	@brief	ポケギア　アクター転送メイン
 */
void PGear_ActorTrans(PGEAR_SYS_WORK* wk)
{
	if(wk->pActSys == NULL){
		return;
	}
	CATS_RenderOamTrans();
}


/**
 *	@brief	ポケギア　システムOAM リソースマネージャ初期化
 *
 *	@param	heapID	ヒープID
 *	@param	actmax	確保するセルアクター領域の個数
 *	@param	palmax	システム用に占有するOBJパレットの本数
 *	@param	skin	初期スキンナンバー
 *	@param	vramType	描画画面指定(PORUOAM_DRAW_MAIN/SUB/BOTH)
 *	@param	cgx_transofs	キャラクタ転送オフセット指定
 *							(PORUOAM_CGXOFS_AREAを指定した場合、空き領域検索モードになる)
 */
PGSYS_OAM_MAN* PGSysOam_Init(int heapID,u16 actmax,u16 palmax,u8 skin,
		u16 vramType,PGSYSOAM_CGXOFS cgx_transofs)
{
	PGSYS_OAM_MAN* wk;

	wk = sys_AllocMemory(heapID,sizeof(PGSYS_OAM_MAN));
	MI_CpuClear8(wk,sizeof(PGSYS_OAM_MAN));

	//パラメータ保存
	wk->heapID = heapID;

	if(palmax > PGSYS_OAM_PALMAX){
		wk->pal_num = PGSYS_OAM_PALMAX;
	}else{
		wk->pal_num = palmax;
	}
	wk->act_max = actmax;
	wk->vramType = vramType;
	wk->cgx_transofs = cgx_transofs;

	pgsysoam_ResManagerInit(wk,skin);
	return wk;
}

/**
 *	@brief	ポケギア　システムアクター　マネージャ解放
 */
void PGSysOam_Release(PGSYS_OAM_MAN* wk)
{
	pgsysoam_ResManagerRelease(wk);
	MI_CpuClear8(wk,sizeof(PGSYS_OAM_MAN));
	sys_FreeMemoryEz(wk);
	wk = NULL;
}

/*
 *	@brief	ポケギア　システムアクター　リソース読み替え
 */
void PGSysOam_ResChange(PGSYS_OAM_MAN* wk,u8 skin)
{
	CLACT_U_RES_OBJ_PTR	obj;

	//キャラクタリソース読み替え
	obj = wk->resObjTbl[RESTYPE_CHR]->tbl[0];
	CLACT_U_ResManagerResChgArcChar(
		wk->resMan[RESTYPE_CHR], obj,
		ARC_PGSYS_GRA,PGSYS_RES_CHRID+skin,PGSYS_RES_NOCOMP,wk->heapID);

	CLACT_U_CharManagerReTrans(obj);

	//パレットリソース読み替え
	obj = wk->resObjTbl[RESTYPE_PAL]->tbl[0];

	CLACT_U_ResManagerResChgArcPltt(wk->resMan[RESTYPE_PAL],
		obj,ARC_PGSYS_GRA,PGSYS_RES_PALID+skin,PGSYS_RES_NOCOMP,wk->heapID);
	CLACT_U_PlttManagerReTrans(obj);
}

/**
 *	@brief	ポケギア　システムアクター　描画
 */
void PGSysOam_Draw(PGSYS_OAM_MAN* wk)
{
	if(wk->cas == NULL){
		return;
	}
	CLACT_Draw(wk->cas);
}

/**
 *	@brief	ポケギア　システムアクター　作成
 */
CATS_ACT_PTR PGSysOam_ObjAdd(PGSYS_OAM_MAN* wk,
	u16 x,u16 y,u16 z,u8 bg_pri,u8 spri,u8 idx,u8 anmID,PGSYSOAM_VRAMTYPE vtype)
{
	u8	vram_type;
	u32	palid;
	CATS_ACT_PTR cap = NULL;
	CLACT_ADD	 add;
	CLACT_U_RES_OBJ_PTR	obj;

	static const u8 pal_tbl[] = {
		2,2,2,3,
		1,1,1,1,
	};

	//ワークメモリ確保
	cap = sys_AllocMemory(wk->heapID, sizeof(TCATS_ACT) );
	MI_CpuClear8(cap,sizeof(TCATS_ACT));

	//ヘッダーメモリ確保
	cap->act_htp = sys_AllocMemory(wk->heapID,sizeof(CLACT_HEADER_TBL));
	cap->act_htp->tbl = sys_AllocMemory(wk->heapID,sizeof(CLACT_HEADER));
	cap->act_hd = cap->act_htp->tbl;

	if(vtype == PGSYSOAM_VT_MAIN){
		vram_type = NNS_G2D_VRAM_TYPE_2DMAIN;
	}else{
		vram_type = NNS_G2D_VRAM_TYPE_2DSUB;
	}

	//ヘッダー生成
	CLACT_U_MakeHeader(
		cap->act_hd,
		PGSYS_RES_HEADID,PGSYS_RES_HEADID,
		PGSYS_RES_HEADID,PGSYS_RES_HEADID,
		CLACT_U_HEADER_DATA_NONE,CLACT_U_HEADER_DATA_NONE,
		PGSYS_RES_NOTRANS, bg_pri,
		wk->resMan[RESTYPE_CHR],wk->resMan[RESTYPE_PAL],
		wk->resMan[RESTYPE_CEL],wk->resMan[RESTYPE_ANM],
		NULL,NULL);

	// OAM登録
	add.ClActSet	= wk->cas;
	add.ClActHeader = cap->act_hd;

	add.mat.x		= FX32_CONST(x);
	add.mat.y		= FX32_CONST(y);
	add.mat.z		= FX32_CONST(z);
#if 1
	if(vram_type == NNS_G2D_VRAM_TYPE_2DSUB){
		add.mat.y += SUB_SURFACE_Y;//+FX32_CONST(48);
	}
#endif

	add.sca.x		= FX32_ONE;			// 拡縮率
	add.sca.y		= FX32_ONE;
	add.sca.z		= FX32_ONE;

	add.rot			= 0;				// 回転角
	add.pri			= spri;				// 優先度
	add.DrawArea	= vram_type;		// 描画面
	add.heap		= wk->heapID;		// ヒープID

	cap->act = CLACT_Add(&add);			//登録処理

	obj = wk->resObjTbl[RESTYPE_PAL]->tbl[0];

	if (cap->act != NULL){
		CLACT_AnmChg(cap->act,anmID);		//アニメーション指定
		palid = CLACT_U_PlttManagerGetPlttNo(
			obj,vram_type);
		CLACT_PaletteNoChg(cap->act,pal_tbl[anmID]+palid);		//パレット指定
	}
	else{
		GF_ASSERT(0 &&"pgsys oam add failed");
	}
	return cap;
}

/**
 *	@brief	ポケギア　システムアクター　削除
 */
void PGSysOam_ObjDelete(CATS_ACT_PTR oam)
{
	//アクター削除
	CATS_ActorPointerDelete_S(oam);
}


/**
 *	@brief	ポケギア　システムリソースマネージャ作成
 */
static void pgsysoam_ResManagerInit(PGSYS_OAM_MAN* wk,u8 skin)
{
	u32 i, j;
	u8	resnum[] = {PGSYS_OAM_CHR_RES_MAX,PGSYS_OAM_PAL_RES_MAX,
					PGSYS_OAM_CEL_RES_MAX,PGSYS_OAM_ANM_RES_MAX};

	wk->cas  = CLACT_U_SetEasyInit(wk->act_max, &wk->renddata,wk->heapID);

	// リソースマネージャー作成&テーブル初期化
	resnum[RESTYPE_PAL] = wk->pal_num;
	for( i=0; i< PGSYS_OAM_RESMAX; i++ ){
		wk->resMan[i] = CLACT_U_ResManagerInit(resnum[i],i, wk->heapID );
		wk->resObjTbl[i] = CLACT_U_ResManagerResObjTblMake(resnum[i],wk->heapID);
		for( j=0; j<wk->resObjTbl[i]->tbl_num; j++ ){
			wk->resObjTbl[i]->tbl[j] = NULL;
		}
	}

	//リソースロード
	pgsysoam_LoadResArc(wk,skin);

	//パレットワーク確保
//	wk->work = sys_AllocMemory(wk->heapID,sizeof(PORUOAM_ACTWORK));
//	MI_CpuClear8(wk->work,sizeof(PORUOAM_ACTWORK));
}

/**
 *	@brief	ポケギア　システムOAMリソースマネージャ解放
 */
static void pgsysoam_ResManagerRelease(PGSYS_OAM_MAN* wk)
{
	u32	i;

	//パレットワーク破棄
//	sys_FreeMemoryEz(wk->work);

	CLACT_DestSet( wk->cas );	// セット破棄
	CLACT_U_CharManagerDeletes( wk->resObjTbl[RESTYPE_CHR] );	// キャラデータ破棄
	CLACT_U_PlttManagerDeletes( wk->resObjTbl[RESTYPE_PAL] );	// パレットデータ破棄

	for( i=0; i<PGSYS_OAM_RESMAX; i++ ){
		// リソースオブジェテーブル破棄
		CLACT_U_ResManagerResObjTblDelete( wk->resObjTbl[i] );
		// リソースマネージャ破棄
		CLACT_U_ResManagerDelete( wk->resMan[i] );
	}
}

/**
 *	@brief	ポケギア　システムOAMリソース初期設定
 */
static void pgsysoam_LoadResArc(PGSYS_OAM_MAN* wk,u8 skin)
{
	int i;
	CLACT_U_RES_MANAGER_PTR	res;
	CLACT_U_RES_OBJ_TBL* obj;
	CLACT_U_RES_OBJ_PTR tmp;

	//キャラクタリソース取得
	obj = wk->resObjTbl[RESTYPE_CHR];
	obj->tbl[0] = CLACT_U_ResManagerResAddArcChar(wk->resMan[RESTYPE_CHR],
		ARC_PGSYS_GRA,PGSYS_RES_CHRID+skin,PGSYS_RES_NOCOMP,PGSYS_RES_HEADID,wk->vramType,wk->heapID);

	GF_ASSERT((obj->tbl[0]!=NULL)&&"pgsysoam char resload failed");

	switch(wk->cgx_transofs){
	case PGSYSOAM_CGXOFS_AREA:
		CLACT_U_CharManagerSetAreaCont(obj->tbl[0]);
		break;
	case PGSYSOAM_CGXOFS_ADJUST:
		CLACT_U_CharManagerSetCharModeAdjustAreaCont(obj->tbl[0]);
		break;
	case PGSYSOAM_CGXOFS_AUTO:
	default:
		CLACT_U_CharManagerSet(obj->tbl[0]);
		break;
	}

	//セル&セルアニメリソース取得
	for(i = 0;i < 2;i++){
		obj = wk->resObjTbl[RESTYPE_CEL+i];
		obj->tbl[0] = CLACT_U_ResManagerResAddArcKindCell(wk->resMan[RESTYPE_CEL+i],
			ARC_PGSYS_GRA,PGSYS_RES_CELID+i,PGSYS_RES_NOCOMP,PGSYS_RES_HEADID,RESTYPE_CEL+i,wk->heapID);

		GF_ASSERT((obj->tbl[0]!=NULL)&&"pgsysoam cell&canm resload failed");
	}

	//初期パレットリソース取得
	obj = wk->resObjTbl[RESTYPE_PAL];
	obj->tbl[0] = CLACT_U_ResManagerResAddArcPltt(wk->resMan[RESTYPE_PAL],
		ARC_PGSYS_GRA,PGSYS_RES_PALID+skin,PGSYS_RES_NOCOMP,PGSYS_RES_HEADID,
		wk->vramType,PGSYS_OAM_PALMAX,wk->heapID);

	GF_ASSERT((obj->tbl[0]!=NULL)&&"pgsysoam pal resload failed");
	CLACT_U_PlttManagerSetCleanArea(obj->tbl[0]);
//	CLACT_U_PlttManagerSet(obj->tbl[0]);
}



/**
 *	@brief	ポケギア　アクターワークマネージャ作成
 *
 *	@param	num	ワーク確保数
 *	@param	heapID	メモリ確保に使用するheapID
 *
 */
PGEAR_ACTWORK_MAN* PGActWorkMan_Create(u16 num,int heapID)
{
	PGEAR_ACTWORK_MAN* wk;

	wk = sys_AllocMemory(heapID,sizeof(PGEAR_ACTWORK_MAN));
	MI_CpuClear8(wk,sizeof(PGEAR_ACTWORK_MAN));

	wk->aNum = num;
	wk->pAct = sys_AllocMemory(heapID,sizeof(PGEAR_ACT_WORK)*num);
	MI_CpuClear8(wk->pAct,sizeof(PGEAR_ACT_WORK)*num);
	return wk;
}

/**
 *	@brief	ポケギア　アクターワークマネージャ開放
 */
void PGActWorkMan_Release(PGEAR_ACTWORK_MAN* wk)
{
	MI_CpuClear8(wk->pAct,sizeof(PGEAR_ACT_WORK)*wk->aNum);
	sys_FreeMemoryEz(wk->pAct);
	MI_CpuClear8(wk,sizeof(PGEAR_ACTWORK_MAN));
	sys_FreeMemoryEz(wk);
	wk = NULL;
}

/**
 *	@brief	アクターワークマネージャ　動作メイン
 */
void PGActWorkMan_Main(PGEAR_ACTWORK_MAN* wk)
{
	u16	i;

	for(i = 0;i < wk->actNum;i++){
		if((!wk->pAct[i].active) || (wk->pAct[i].pFunc == NULL)){
			continue;
		}
		(wk->pAct[i].pFunc)((void*)wk,&(wk->pAct[i]));
	}
}

/**
 *	@brief	アクターワークマネージャ　登録OBJのpos座標を一挙に反映させる
 */
void PGActWorkMan_AllPosUpdate(PGEAR_ACTWORK_MAN* wk)
{
	u16	i;

	for(i = 0;i < wk->actNum;i++){
		if(!wk->pAct[i].active || wk->pAct[i].automv_fook){
			continue;
		}
		CATS_ObjectPosSet(wk->pAct[i].act,wk->pAct[i].pos.x,wk->pAct[i].pos.y);
	}
}

/**
 *	@brief	アクターワークマネージャ　OBJ登録
 *
 *	@return 登録index
 */
u16 PGActWorkMan_ListAdd(PGEAR_ACTWORK_MAN* wk,CLACT_WORK_PTR pAct)
{
	PGEAR_ACT_WORK* aWork;
	if(wk->actNum >= wk->aNum){
		return -1;
	}

	aWork = &(wk->pAct[wk->actNum]);
	aWork->act = pAct;
	aWork->active = TRUE;
	aWork->view_f = TRUE;
	return wk->actNum++;
}

/**
 *	@brief	アクターワークマネージャ　リストに登録されたOBJをまとめて開放
 *
 *	＊セルアクター自体も開放する
 */
void PGActWorkMan_ListDelAll(PGEAR_ACTWORK_MAN* wk)
{
	u16	i;

	for(i = 0;i < wk->actNum;i++){
		if(wk->pAct[i].act != NULL){
			CATS_ObjectDel(wk->pAct[i].act);
		}
	}
	MI_CpuClear8(wk->pAct,sizeof(PGEAR_ACT_WORK)*wk->actNum);
	wk->actNum = 0;
}

/*
 *	@brief	アクターワークマネージャ　指定indexから後ろに登録されたOBJを開放する
 *	＊セルアクター自体も開放する
 */
void PGActWorkMan_ListDelIdxAfter(PGEAR_ACTWORK_MAN* wk,u8 idx)
{
	u16	i,num;

	num = wk->actNum-idx;
	for(i = idx;i < wk->actNum;i++){
		if(wk->pAct[i].act != NULL){
			CATS_ObjectDel(wk->pAct[i].act);
		}
	}
	MI_CpuClear8(&(wk->pAct[idx]),sizeof(PGEAR_ACT_WORK)*num);
	wk->actNum -= num;
}


/**
 *	@brief	アクターワーク　動作関数セット
 */
void PGActWork_FuncSet(PGEAR_ACTWORK_MAN* wk,u16 idx,PGEAR_ACT_FUNC func)
{
	if(idx >= wk->actNum)	{
		return;
	}

	wk->pAct[idx].pFunc = func;
}